package com.quick.springbootquicky.config;

import com.quick.springbootquicky.interceptors.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 添加配置注解以便spring容器管理
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private LoginInterceptor loginInterceptor;

    /**
     * 注册自定义的拦截器，同时放行注册与登入接口
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor) //添加拦截器
                .excludePathPatterns("/user/register","/user/login","/user/test");//放行的接口
    }

    /**
     * 允许跨越
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")   // 对当前路径下的所有请求都应用当前的跨域配置
                .allowedOrigins("*") // 允许的跨域源，可以通过逗号隔开，也可以用 * 表示允许所有源；
                .allowedMethods("*") // 允许的请求方法，可以指定具体的，如："GET"、"POST"、"PUT"、"DELETE"
                .allowedHeaders("*") // 允许的请求头类型，可以指定具体的，如："Content-Type", "Authorization
                //.allowCredentials(true) // 是否允许发送Cookie
                .maxAge(60*60);    // 设置请求最大有效时长，在这个时长内，重复的请求就不会发送预检请求
    }

}
